module.exports = function(grunt) {

    // 初始化配置grunt任务
    grunt.initConfig({
        concat: {   //任务名，合并js，concat插件所需配置
            options: {
              separator: ';',  //连接符
            },
            dist: {          //
              src: ['src/js/*.js'],// 源文件也可['src/intro.js', 'src/project.js', 'src/outro.js']
              dest: 'build/js/build.js',//输出的目录
            },
          },
        pkg: grunt.file.readJSON('package.json'), //压缩
        uglify: {//任务名，压缩js
            options: {
              banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +  //设置压缩后的js文件第一行的名称、版本和更新时间的备注提示：/*! grunt_test - v1.0.0 - 2020-11-10 */
                '<%= grunt.template.today("yyyy-mm-dd") %> */'
            },
            bulid: {       //可以自己命名
              files: {
                'build/js/build.min.js': ['build/js/build.js']      //对于合并后文件进行压缩，'存放的目录'：'[需要压缩的合并文件目录]'
              }                          //加min是为了和之前合并的文件区分开
            }
          },
        jshint:{            //语法检查
            options:{
                jshintrc: '.jshintrc'    //指定配置文件
            },
            build :['Gruntfile.js','src/js/*.js']    //指定检查的文件,Cruntfile.js指的是自己
        },
        cssmin: {       //压缩css
            options: {
              mergeIntoShorthands: false,  //不希望快速压缩
              roundingPrecision: -1
            },
            target: {
              files: {
                'build/css/build.min.css': ['src/css/*.css']   //’输出的文件目录’：[需要压缩的文件路径]
              }
            }
          },
          watch: {
            scripts: {
              files: ['src/css/*.js','src/js/*.js'],       //监视的文件
              tasks: ['concat','uglify','jshint','cssmin'], //当监视的文件有改动，会自动执行tasks中对应的任务
              options: {          //设置属性
                spawn: false,     //变量更新，  true：全量执行    false：只自动执行tasks中修改了的对应的任务
              },
            },
          },
    });
  
    // 加载包含任务的插件。grunt任务执行的时候去加载对应的任务插件
    grunt.loadNpmTasks('grunt-contrib-concat');//合并js，grunt-contrib-concat【任务名】
    grunt.loadNpmTasks('grunt-contrib-uglify');//压缩js
    grunt.loadNpmTasks('grunt-contrib-jshint');//语法检查
    grunt.loadNpmTasks('grunt-contrib-cssmin');//压缩css
    grunt.loadNpmTasks('grunt-contrib-watch'); //watch监视
    // 默认被执行的任务列表。
    grunt.registerTask('default', ['concat','uglify','jshint','cssmin']);
    grunt.registerTask('mywatch',['default','watch']);   //当执行grunt时执行的是以上的，开发完后，再执行grunt mywatch，确保执行后再监视
  };